草庐IT

c++ - CRT 和 WIN32 API

全部标签

c - 如何枚举内核中指定进程的所有打开句柄(Windows)

我有一个内核驱动程序。我如何枚举我的内核驱动程序中指定进程的所有打开句柄?我想关闭这些句柄。谢谢! 最佳答案 Iwanttoclosethesehandles.就其值(value)而言,仅仅因为可以做某事,并不意味着应该做。这是个坏主意。也就是说,可以使用对Zw/NtQuerySystemInformation的未记录调用来枚举所有进程的所有句柄。具有信息类SystemHandleInformation。使用这些术语进行网络搜索会得到您想要的结果。 关于c-如何枚举内核中指定进程的所有打

windows - Win32 堆栈部分基地址

我知道要找到一个文本(代码)部分的基地址,应该寻找.text部分的虚拟地址(除非启用了ASLR),但是堆栈呢?堆栈内存是否与堆一起存储在.data段中?如果是这样,我应该寻找.data部分虚拟地址以了解堆栈基地址 最佳答案 堆栈不是一个部分。为每个线程动态分配一个堆栈。(如果它是一个部分,那么每个进程只能有一个线程。) 关于windows-Win32堆栈部分基地址,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

C#/.NET Timers 和 Win32 Sleep 函数都不准确

对于下面的代码:实际间隔始终是1014.01毫秒而不是1000毫秒...我也尝试过在C++中使用System.Windows.Forms.Timer、System.Threading.Timer和WinAPISleep(int)函数,但额外增加的14.01ms始终存在。Windows8的系统时钟是准确的,但.NET计时器和WindowsAPI的Sleep(int)函数都不准确。publicpartialclassForm1:Form{privatelongticks;publicForm1(){InitializeComponent();}privatevoidForm1_Load(o

c - 是否可以仅按名称管理 JobObject,而无需保持打开的 HANDLE?

使用流程,我可以执行以下操作:intpid;::CreateProcess(NULL,cmd,...,&pi);pid=pi.dwProcessId;::CloseHandle(pi.hProcess);//thenlater...HANDLEproc=::OpenProcess(PROCESS_TERMINATE,FALSE,pid);::TerminateProcess(proc,1);::CloseHandle(proc);以这种方式,我可以仅通过pid管理windows进程,这对于多平台代码来说非常好。我想将此模式扩展到作业对象:HANDLEjob=::CreateJobObj

windows - 无法打开 VB 项目,无法加载错误 "C:\windows\system32\mscomctl.ocx"

我有一个VB项目能够正常工作,但现在当我打开该项目时,我收到了mscomctl.ocx错误。我已经重新注册了ocx,但仍然无法加载项目。我该如何解决这个问题? 最佳答案 我在Windows764位环境中打开项目时遇到了这个问题,它在winXP机器上工作正常。我之前在项目文件中做了一个非常简单的更改,上面写着Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0;MSCOMCTL.OCX我将2.1更改为2.0因为我在很多论坛上都看到过这样的情况,而且效果很好。VBP文件中的更新引用是Ob

windows - System32 是 Windows 中的当前工作目录?

刚刚注意到windows下system32是当前工作目录(而不是执行文件所在的目录)。为什么?总是这样吗?这是故意的吗? 最佳答案 当前目录设置为进程启动的一部分。进程启动后,它可以随意更改其当前目录。当前目录被指定为CreateProcess的参数,以及用于创建进程的任何其他类似API函数。为新进程的当前目录传递NULL是很常见的。在这种情况下,将使用父进程的当前目录。所以,看看你的具体问题:Whyisthatso?如果您的进程的当前目录是system32,那是因为无论启动该进程的是什么,或者您的进程选择了它。Isitalways

c - UDP 应用程序中客户端或服务器宕机时如何处理

我正在开发一个使用UDP进行客户端服务器通信的Windows应用程序,但是由于UDP是无连接的,因此每当客户端出现故障时,服务器都不知道客户端已关闭并继续发送数据。服务器关闭时的情况与此类似。我怎样才能满足这种情况,即每当客户端或服务器中的任何一个宕机时,另一方必须知道并且可以处理它。等待回复。 最佳答案 你问的超出了UDP的范围。您需要通过UDP实现自己的协议(protocol)才能实现此目的。一个简单的想法是定期发送keepalivemessages(另一方面,TCP具有此功能)。你可以有一个简单的实现如下:让后台线程不断发送这

c++ - c - 如何在资源管理器中打开选定的文件

就像在谷歌浏览器中一样,当你下载一些东西时,你可以点击“在资源管理器中打开”或其他东西,它会打开exlplorer并突出显示该文件。我将编写一个程序(可能是一个ccmd程序)在给定位置搜索文件,然后我希望能够直接从程序中单击并打开文件。还有其他方法可以推荐我这样做吗?它不必是c甚至是cmd程序。 最佳答案 要打开文件夹并选择文件夹中的一项或多项,SHOpenFolderAndSelectItems函数就是您要找的。 关于c++-c-如何在资源管理器中打开选定的文件,我们在StackOve

c# - 为什么在 Windows 7(.net 3.5) 中运行的应用程序在 Win8(.net4.5) 中无法运行

我有一个TargetFrameworkVersion=v3.5的应用程序v3.5应用程序在Windows7中运行良好,但在Windows8中我需要安装.netFramework3.5使用该应用程序。为什么我应该安装.netframework3.5,即使Win8具有默认的.netframework4.5。我应该如何在Win7和Win8中使用该应用程序? 最佳答案 默认情况下,Windows8上未安装.NET3.5,仅安装.NET4.5。.NET4.0/4.5和.NET2.0/3.0/3.5是并行安装的。因此,基于.NET3.5构建的应

c - 变量.c :4:1: error: expected declaration specifiers or '...' before '(' token

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我今年13岁,正在学习C语言编程,因此我对C语言编程有非常基本的了解。我正在学习如何“显示变量值”,我使用的是非常基本的代码,但是当我尝试使用GNU(MinGW)编译它时,它告诉我...vars.c:4:1:错误:预期的声明说明符或“...”在“(”标记之前请有人告诉我如何解决这个问题!这是代码:#includeintmain((printf("Integ